An SDN is a new innovative network architecture, and a core technology OpenFlow of the SDN separates a control plane of a network device from a data plane of the network device, thereby flexibly controlling network traffic, and providing a favorable platform for innovation of a core network and an application.
OpenFlow is a new network switching model, which supports control of a user over a network processing behavior using an open flow table. A data forwarding layer is separated from a control layer in an OpenFlow network, where a switch in the OpenFlow network forwards data at a data layer, and a controller implements a function of the control layer. The controller controls an OpenFlow switch using the OpenFlow protocol, thereby controlling an entire network.
A flow table is a core data structure for controlling a forwarding policy by a switch in the OpenFlow network. A switching chip decides, by matching a flow table entry, to adopt a proper behavior for network traffic that enters the switch. Each table entry includes three fields, that is, a header field, a counters field, and an actions field.
Each table entry is corresponding to zero or multiple actions, and if there is no forwarding action, a packet is discarded by default. Multiple actions need to be executed sequentially according to an order of priorities. However, a packet is not sent according to an order.
In a protocol version later than OpenFlow 1.1, a switch adopts a multi-flow table manner.
Data processing is a processing pipeline including multiple flow tables, and a controller delivers a flow table entry to one or more tables according to a forwarding rule of a data flow. The data flow performs matching according to a match field in a flow table entry, and if multiple flow table entries can be matched, a flow table entry with a highest priority is executed, and then an action of the flow table entry is executed.
There is no definition of implementation of a multi-flow table structure in the OpenFlow protocol, and multi-flow table structures of switches from different manufacturers may be different. When there are switches from multiple manufacturers in a network managed by a controller, the controller has no unified processing rule for multiple types of flow tables, which causes that a switch cannot forward data.